Multi layout claviers simultanés pour Xorg

31/01/2018 - ~2mins linux xorg clavier keyboard bépo

J'aime beaucoup les claviers. Et il m'arrive régulièrement d'en brancher plusieurs sur l'ordinateur… en même temps. Ça n'a que peu d'intérêt mais j'aime bien. Ma petite collection grandit petit à petit. Mon clavier principal est en bépo légèrement trafiqué tandis que la plupart de mes autres bestiaux sont en azerty plus traditionnel voir quelques-uns en qwerty. Du coup j'ai configuré Xorg pour avoir une configuration un peu hors du commun :

Voilà le cahier des charges que je voulait.

Bon du coup pour faire ça on va éditer le fichier /etc/X11/xorg.conf . Certaines distributions ont remplacées ce fichier par un dossier contenant plusieurs fichiers. Dans ce cas cherchez quel fichier contient ce qui a attrait à evdev…

Section "InputClass"

    Identifier "evdev keyboard catchall"

    MatchIsKeyboard "on"

    MatchDevicePath "/dev/input/event*"

    Driver "evdev"

    Option "XkbLayout"      "fr,fr,us"

    Option "XkbVariant"     "oss,bepo, "

    Option "XkbOptions"     "compose:rctrl,terminate:ctrl_alt_bksp,grp:caps_toggle"

EndSection

 

Section "InputClass"

    Identifier "Custom Keyboard"

    MatchIsKeyboard "on"

    MatchDevicePath "/dev/input/event*"

    MatchVendor "Lord_Corp"

    Driver "evdev"

    Option "XkbLayout"      "fr,fr,us"

    Option "XkbVariant"     "bepo,oss, "

    Option "XkbOptions"     "compose:rctrl,terminate:ctrl_alt_bksp,grp:caps_toggle"

EndSection

Voilà tout.

Comment ça marche ?

Et bien Xorg est composé de multiples “drivers” ou modules, dont un nommé evdev qui est chargé de scanner tous les appareils d'entrées et de les configurer. Du coup il va piocher dans /dev/input/ et va regarder chacun des fichiers présents correspondants à tous les appareils d'entrée détectés par votre kernel.

En fonction du type d'appareil (clavier/souris/tablette tactile/…), il va appliquer des configurations différentes. Il fait cela via les règles de type catchall.

Par chance on peut lui dire d'appliquer des règles différentes à des appareils spécifiques en rajoutant des conditions pour match. Dans mon cas, il recherche Lord_Corp dans le champs Vendor fourni par l'appareil. Donc vous pouvez mettre le petit nom de votre appareil à vous.

Comment je trouve le Vendor de mon appareil ?

Facile : xinput –list –long